.TH DUMP 5 
.UC
.SH NAME
dump, ddate \- incremental dump format
.SH SYNOPSIS
.B #include <sys/types.h>
.br
.B #include <sys/ino.h>
.br
.B #include <dumprestor.h>
.SH DESCRIPTION
Tapes used by
.I dump
and
.IR restor (8)
contain:
.nf
.IP ""
a header record
two groups of bit map records
a group of records describing directories
a group of records describing files
.fi
.PP
The format of the header record and of the first
record of each description as given in the
include file
.I <dumprestor.h>
is:
.PP
.nf
.ta .5i \w'#define\ TS_INODE\ 'u
#if	UCB_NKB == 1
#define NTREC   	10
#endif
#ifndef	UCB_NKB
#define NTREC   	20
#endif
#define MLEN    	16
#define MSIZ    	4096

#define TS_TAPE 	1
#define TS_INODE	2
#define TS_BITS 	3
#define TS_ADDR 	4
#define TS_END  	5
#define TS_CLRI 	6
#define MAGIC   	(int)60011
#define CHECKSUM	(int)84446
struct	spcl
{
	int	c_type;
	time_t	c_date;
	time_t	c_ddate;
	int	c_volume;
	daddr_t	c_tapea;
	ino_t	c_inumber;
	int	c_magic;
	int	c_checksum;
	struct	dinode	c_dinode;
	int	c_count;
	char	c_addr[BSIZE];
} spcl;

struct	idates
{
	char	id_name[16];
	char	id_incno;
	time_t	id_ddate;
};
.fi
.PP
.I NTREC
is the number of BSIZE (sys/param.h) byte records in a physical
tape block.
.I MLEN
is the number of bits in a bit map word.
.I MSIZ 
is the number of bit map words.
.PP
The
.I TS\_
entries are used in the
.I c\_type
field to indicate what sort of header
this is.
The types and their meanings are as follows:
.TP \w'CHECKSUM\|'u
TS\_TAPE
Tape volume label
.PD 0
.TP
TS\_INODE
A file or directory follows.
The
.I c\_dinode
field is a copy of the disk inode and contains
bits telling what sort of file this is.
.TP
TS\_BITS
A bit map follows.
This bit map has a one bit
for each inode that was dumped.
.TP
TS\_ADDR
A subrecord of a file description.
See
.I c\_addr
below.
.TP
TS\_END
End of tape record.
.TP
TS\_CLRI
A bit map follows.
This bit map contains a zero bit for
all inodes that were empty on the file system when dumped.
.TP
MAGIC
All header records have this number in
.I c\_magic.
.TP
CHECKSUM
Header records checksum to this value.
.PD
.PP
The fields of the header structure are as follows:
.TP \w'TS_INODE\ 'u
c\_type
The type of the header.
.PD 0
.TP
c\_date
The date the dump was taken.
.TP
c\_ddate
The date the file system was dumped from.
.TP
c\_volume
The current volume number of the dump.
.TP
c\_tapea
The current number of this (512-byte) record.
.TP
c\_inumber
The number of the inode being dumped if this
is of type
.I TS\_INODE.
.TP
c\_magic
This contains the value
.I MAGIC
above, truncated as needed.
.TP
c\_checksum
This contains whatever value is needed to
make the record sum to 
.I CHECKSUM.
.TP
c\_dinode
This is a copy of the inode as it appears on the
file system; see
.IR filsys (5).
.TP
c\_count
The count of characters in
.I c\_addr.
.TP
c\_addr
An array of characters describing the blocks of the
dumped file.
A character is zero if the block associated with that character was not
present on the file system, otherwise the character is non-zero.
If the block was not present on the file system, no block was dumped;
the block will be restored as a hole in the file.
If there is not sufficient space in this record to describe
all of the blocks in a file,
.I TS\_ADDR
records will be scattered through the file, each one
picking up where the last left off.
.PD
.PP
Each volume except the last ends with a tapemark (read as an end
of file).
The last volume ends with a
.I TS\_END
record and then the tapemark.
.PP
The structure
.I idates
describes an entry of the file
.I /etc/ddate
where dump history is kept.
The fields of the structure are:
.TP \w'TS_INODE\ 'u
id\_name
The dumped file system is
.RI `/dev/ id\_nam'.
.PD 0
.TP
id\_incno
The level number of the dump tape;
see
.IR dump (8).
.TP
id\_ddate
The date of the incremental dump in system format
see
.IR types (5).
.PD
.SH FILES
/etc/ddate
.SH "SEE ALSO"
filsys(5), types(5), dump(8), dumpdir(8), restor(8)
